package com.love.travel.enums;

import java.util.ArrayList;
import java.util.List;

public enum TagTypeEnum {

    DESTINATION_TAG(1, "目的地标签"),
    PRODUCT_TAG(2, "产品标签"),
    ATTRACTION_TAG(3, "景点标签");

    private final Integer  code;   // 标签类型编码
    private final String desc;   // 标签类型描述

    TagTypeEnum(Integer  code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public Integer  getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    // 根据code获取枚举实例
    public static TagTypeEnum getByCode(String code) {
        for (TagTypeEnum type : TagTypeEnum.values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return null;
    }

    // 根据desc获取枚举实例
    public static TagTypeEnum getByDesc(String desc) {
        for (TagTypeEnum type : TagTypeEnum.values()) {
            if (type.getDesc().equals(desc)) {
                return type;
            }
        }
        return null;
    }

    // 判断是否包含指定code的标签类型
    public static boolean containsCode(String code) {
        for (TagTypeEnum type : TagTypeEnum.values()) {
            if (type.getCode().equals(code)) {
                return true;
            }
        }
        return false;
    }

    // 判断是否包含指定desc的标签类型
    public static boolean containsDesc(String desc) {
        for (TagTypeEnum type : TagTypeEnum.values()) {
            if (type.getDesc().equals(desc)) {
                return true;
            }
        }
        return false;
    }

    // 获取所有标签类型的code列表
    public static List<Integer > getAllCodes() {
        List<Integer > codes = new ArrayList<>();
        for (TagTypeEnum type : TagTypeEnum.values()) {
            codes.add(type.getCode());
        }
        return codes;
    }

    // 获取所有标签类型的desc列表
    public static List<String> getAllDescs() {
        List<String> descs = new ArrayList<>();
        for (TagTypeEnum type : TagTypeEnum.values()) {
            descs.add(type.getDesc());
        }
        return descs;
    }
}